//
// Created by binny on 2019/9/20.
//
#include <stdio.h>

void test() {
    printf("rrrrrrr");
}

int main() {
    /*函数指针*/
    void (*p)() = test;
    p();
    return 0;
}


//int main() {
//    /*一维数组*/
//    int array1[3] = {1, 2, 3};
//    int s1 = sizeof(array1) / sizeof(array1[0]);
//    for (int l = 0; l < s1; ++l) {
//        printf("array1[%d]= %d\n", l, array1[l]);
//    }
//    printf("通过指针遍历一维数组\n");
//    int (*pInt1) = array1;
//    printf("pInt1= %d\n", *pInt1);
//    for (int m = 0; m < s1; ++m) {
//        printf("下标法 --- array1[%d]= %d\n", m, array1[m]);
//        printf("指针法 --- pInt1[%d]= %d\n", m, *pInt1++);
//    }
//
//    return 0;
//}

//int main() {
///*二维数组*/
//    int array2[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
//
//    int (*pInt2)[3] = array2;
//
//    for (int i = 0; i < 3; ++i) {
//        for (int j = 0; j < 3; ++j) {
//            printf("下标法 --- pInt[%d][%d] = %d\n", i, j, array2[i][j]);
//            printf("指针法 --- array2[%d][%d] = %d\n", i, j, *(*(pInt2 + i) + j));
//        }
//    }
//    return 0;
//}

//int main() {
//    /*三维数组*/
//    int array3[3][3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27,
//                           28, 29};
//    int (*pInt3)[3][3] = array3;
//
//    int s3 = sizeof(array3) / sizeof(array3[0][0][0]);
//    printf("array3[3][3][3]的大小 = %d\n\n", s3);
//    printf("通过下标遍历三维数组\n");
//
//    for (int i = 0; i < 3; ++i) {
//        for (int j = 0; j < 3; ++j) {
//            for (int k = 0; k < 3; ++k) {
//                printf("下标法 --- array3[%d][%d][%d] = %d\n", i, j, k, array3[i][j][k]);
//                printf("指针法 --- pInt[%d][%d][%d] = %d\n", i, j, k, *(*(*(pInt3 + i) + j) + k));
//            }
//        }
//    }
//    return 0;
//}

//int main() {
//    /*四维数组*/
//    int array4[2][2][2][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17};
//    int (*pInt4)[2][2][2] = array4;
//
//    int s3 = sizeof(array4) / sizeof(array4[0][0][0][0]);
//    int s4 = sizeof(array4) / sizeof(int);
//    printf("大小 = %d\n\n", s3);
//    printf("大小 = %d\n\n", s4);
//
//    for (int i = 0; i < 2; ++i) {
//        for (int j = 0; j < 2; ++j) {
//            for (int k = 0; k < 2; ++k) {
//                for (int l = 0; l < 2; ++l) {
//                    printf("下标法 --- array4[%d][%d][%d][%d] = %d\n", i, j, k,l, (array4[i][j][k][l]));
//                    printf("指针法 --- pInt4[%d][%d][%d][%d] = %d\n", i, j, k,l, *(*(*(*(pInt4 + i) + j) + k) + l));
//                }
//            }
//        }
//    }
//    return 0;
//}




//int main() {
//    int array1[3] = {1, 2, 3};
//    int s1 = sizeof(array1) / sizeof(array1[0]);
//    for (int l = 0; l < s1; ++l) {
//        printf("array1[%d]= %d\n", l, array1[l]);
//    }
//    printf("通过指针遍历一维数组\n");
//    int (*pInt1) = array1;
//    for (int m = 0; m < s1; ++m) {
//        printf("pInt1[%d]= %d\n", m, *pInt1++);
//    }
//
//    int array2[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
//    int s2 = sizeof(array2) / sizeof(array2[0][0]);
//    printf("array[3][3]的大小 = %d\n\n", s2);
//    printf("通过下标遍历数组\n");
//    for (int i = 0; i < 3; ++i) {
//        for (int j = 0; j < 3; ++j) {
//            printf("array[%d][%d] = %d\n", i, j, array2[i][j]);
//        }
//
//    }
//    printf("通过指针遍历二维数组\n");
//    int (*pInt2)[3] = array2;
//
////
////    for (int i = 0; i < 3; ++i) {
////        for (int j = 0; j < 3; ++j) {
////            printf("pInt[%d][%d] = %d\n", i, j, *(*(pInt2 + i) + j));
////        }
////    }
//    for (int i = 0; i < 3; ++i) {
//        int (*pInt)[3] = pInt2++;
//        for (int j = 0; j < 3; ++j) {
//            printf("pInt[%d][%d] = %d\n", i, j, *(*(pInt)++));
//        }
//    }
//
//
//
////
////    int array3[3][3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27,
////                           28, 29};
////    int (*pInt3)[3][3] = array3;
////
////    int s3 = sizeof(array3) / sizeof(array3[0][0][0]);
////    printf("array3[3][3][3]的大小 = %d\n\n", s3);
////
////    printf("通过指针遍历三维数组\n");
////
////    for (int i = 0; i < 3; ++i) {
////        for (int j = 0; j < 3; ++j) {
////            for (int k = 0; k < 3; ++k) {
////                printf("pInt[%d][%d][%d] = %d\n", i, j, k, *(*(*(pInt3 + i) + j) + k));
////            }
////        }
////    }
//    return 0;
//}